//Source file: C:\\Postgrado\\Tesis de Grado\\Diagramas\\src\\com\\obelisco\\data\\DirectorioData.java

package com.obelisco.modelo.data;

import java.sql.Date;
import java.util.*;

import org.hibernate.validator.Max;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;

import com.obelisco.modelo.data.auxiliares.Archivo;
import com.obelisco.modelo.data.pk.*;

public class CarpetaTransaccion extends DataGenerica {	

//	private CarpetaTransaccionPK id = new CarpetaTransaccionPK();
	private Integer codigo;
    private Sistema sistema;
	private String nombre = "";
	private String descripcion = "";
	private String ruta;
	//public String codigopadre;
	private CarpetaTransaccion padre;
	private Integer nivel;
	private Archivo icono = new Archivo();
	private Integer orden;
	//private java.util.Map<Integer,Transaccion> transacciones = new HashMap<Integer,Transaccion>();
	private Set<Transaccion> transacciones = new HashSet<Transaccion>();
	private Set<CarpetaTransaccion> hijos = new HashSet<CarpetaTransaccion>();	
	//private java.util.Map<Integer,CarpetaTransaccion> hijos = new HashMap<Integer,CarpetaTransaccion>();
	
	
	public CarpetaTransaccion() {
		super(CarpetaTransaccion.class);
	}
	
	public void setPadre(CarpetaTransaccion padre) {
		CarpetaTransaccion oldValue = getPadre();
		this.padre = padre;
		if (padre != null) {
			this.setSistema(padre.getSistema());
			this.nivel = padre.getNivel()+1;
			//this.codigopadre = padre.getCodigo();
		}
        //firePropertyChange("padre", oldValue, padre);
	}

//	public java.util.Map<Integer,CarpetaTransaccion> getHijos() {
//		return hijos;
//	}
//
//	public void setHijos(java.util.Map<Integer,CarpetaTransaccion> carpetas) {
//		this.hijos = carpetas;
//	}


	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		//String oldValue = getDescripcion();
		this.descripcion = descripcion;
        //firePropertyChange("descripcion", oldValue, descripcion);
	}

/*	public CarpetaTransaccionPK getId() {
		return id;
	}

	public void setId(CarpetaTransaccionPK id) {
		this.id = id;
	}*/

    @NotNull(message="{error.notnull}")
    @NotEmpty(message="{error.notempty}")
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		//String oldValue = getNombre();
		this.nombre = nombre;
        //firePropertyChange("nombre", oldValue, nombre);
	}

	public CarpetaTransaccion getPadre() {
		return padre;
	}

	public String getRuta() {
		return ruta;
	}

	public void setRuta(String ruta) {
		this.ruta = ruta;
	}

//	public java.util.Map<Integer,Transaccion> getTransacciones() {
//		return transacciones;
//	}
//
//	public void setTransacciones(java.util.Map<Integer,Transaccion> transacciones) {
//		this.transacciones = transacciones;
//	}

	public boolean equals(Object other) {
		if (other instanceof CarpetaTransaccion) {
			CarpetaTransaccion that = (CarpetaTransaccion) other;
			if(that.getCodigo() == null && this.getCodigo() == null)
			{
				return true;
			}
			else
			{
				return that.getCodigo().equals(this.getCodigo());
			}
		} else {
			return false;
		}
	}

	/*public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}*/

    @NotNull(message="{error.notnull}")
	public Sistema getSistema() {
		return sistema;
	}

	public void setSistema(Sistema sistema) {
		this.sistema = sistema;
	}

	public Set<CarpetaTransaccion> getHijos() {
		return hijos;
	}

	public void setHijos(Set<CarpetaTransaccion> hijos) {
		this.hijos = hijos;
	}

	public Set<Transaccion> getTransacciones() {
		return transacciones;
	}

	public void setTransacciones(Set<Transaccion> transacciones) {
		this.transacciones = transacciones;
	}

	public Archivo getIcono() {
		return icono;
	}

	public void setIcono(Archivo icono) {
		this.icono = icono;
		if (this.icono != null) {
			this.icono.setNombre("foto.jpg");
			if (this.icono.getContenido().length > 0) {
				this.icono
						.setTipo(Archivo.determinarTipo(icono.getContenido()));
			} else {
				this.icono.setContenido(new byte[] {});
				this.icono.setTipo("");
			}
		} else {
			this.icono = new Archivo();
		}
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public void setNivel(Integer nivel) {
		this.nivel = nivel;
	}

	public Integer getNivel() {
		return nivel;
	}

	//@NotNull(message="Orden. {error.notnull}")
	public Integer getOrden() {
		return orden;
	}

	public void setOrden(Integer orden) {
		this.orden = orden;
	}

	@Override
	public boolean equals(DataGenerica objeto) {
		// TODO Auto-generated method stub
		if (objeto instanceof CarpetaTransaccion) {
			return ((CarpetaTransaccion)objeto).codigo.equals(this.codigo);
		}
		return false;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.ruta;
	}
}
